/// 活动编辑表单模型
/// 
/// 用于活动编辑页面的数据管理和验证
class ActivityEditForm {
  // 表单字段
  int activityId;
  String activityTitle;
  String activityDetails;
  
  // 原始值（用于变更检测）
  String _originalTitle = '';
  String _originalDetails = '';
  
  ActivityEditForm({
    required this.activityId,
    this.activityTitle = '',
    this.activityDetails = '',
  }) {
    _originalTitle = activityTitle;
    _originalDetails = activityDetails;
  }
  
  /// 表单验证 - 标题
  String? validateTitle() {
    if (activityTitle.trim().isEmpty) {
      return '请输入活动标题';
    }
    if (activityTitle.trim().length > 50) {
      return '活动标题不能超过50个字符';
    }
    return null;
  }
  
  /// 表单验证 - 详情
  String? validateDetails() {
    if (activityDetails.trim().isEmpty) {
      return '请输入活动描述';
    }
    if (activityDetails.trim().length > 500) {
      return '活动描述不能超过500个字符';
    }
    return null;
  }
  
  /// 表单是否有效
  bool get isValid {
    return validateTitle() == null && validateDetails() == null;
  }
  
  /// 检测是否有变更
  bool get hasChanges {
    return activityTitle.trim() != _originalTitle || 
           activityDetails.trim() != _originalDetails;
  }
  
  /// 获取变更的数据（用于API请求）
  Map<String, dynamic>? getChanges() {
    if (!hasChanges) return null;
    
    final changes = <String, dynamic>{};
    
    if (activityTitle.trim() != _originalTitle) {
      changes['activityTitle'] = activityTitle.trim();
    }
    
    if (activityDetails.trim() != _originalDetails) {
      changes['activityDetails'] = activityDetails.trim();
    }
    
    return changes;
  }
  
  /// 重置表单
  void reset() {
    activityTitle = _originalTitle;
    activityDetails = _originalDetails;
  }
}

